package com.boot.down.mapper;

import com.boot.down.entity.RedPaper;
import org.apache.ibatis.annotations.Mapper;

/**
 * 红包表的mapper映射接口
 */
@Mapper
public interface RedPaperMapper {

    /**
     * 根据主键获取红包信息
     * @param id 红包主键
     * @return 红包对象
     */
    RedPaper getRedPaper(Long id);

    /**
     * 根据主键获取红包信息(添加行级锁)
     * @param id 红包主键
     * @return 红包对象
     */
    RedPaper getRedPaperForUpdate(Long id);

    /**
     * 减少红包的个数
     * @param id 红包主键
     * @return 更新记录数
     */
    int decreaseRedPaper(Long id);

    /**
     * 更新红包个数
     * @param id 红包主键
     * @param version 版本，判断是否更新
     * @return 更新记录数
     */
    int decreaseRedPaperHappyLock(Long id, Integer version);

    /**
     * 创建红包
     * @param redPaper
     * @return
     */
    int insertRedPaper(RedPaper redPaper);
}
